﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Data;
using System.Data.SqlClient;

using Biblioteca.Conexao;
using Biblioteca.Model;
using System.Collections;

namespace Biblioteca.Repositorio
{
    public class RepositorioPedido
    {

        SqlConnection con = Conexao2.obterConexao2().conectar();


        public List<Pedido> listarPedido()
        {


            List<Pedido> retorno = new List<Pedido>();

            // ArrayList lista = new ArrayList();

            try
            {
                // string select = "select p.codpedido , p.data, p.valor, c.codCli, r.codRepre, p.situacao from pedido as p inner join cliente as c on p.codCli=c.codCli inner join Representada as r on p.codRepre=r.codRepre";

                string select = " SELECT Cliente.codCli, Cliente.razaoSocial as razaoSocial_cli, Cliente.cnpj as cnpj_cli, ";
                select += " Pedido.codPedido, Pedido.data, Pedido.valor, Pedido.situacao, ";
                select += " Representada.codRepre, Representada.razaoSocial AS razaoSocial_rep, Representada.cnpj AS cnpj_rep ";
                select += " FROM  Cliente INNER JOIN ";
                select += " Pedido ON Cliente.codCli = Pedido.codCli INNER JOIN";
                select += " Representada ON Pedido.codRepre = Representada.codRepre";
                select += " where situacao = 'pendente'";


                SqlCommand sql = new SqlCommand(select, con);

                SqlDataReader dataReader = sql.ExecuteReader();

                while (dataReader.Read())
                {

                    Pedido ped = new Pedido();
                    ped.Clie.CodCli = dataReader.GetInt32(dataReader.GetOrdinal("codCli"));
                    ped.Clie.RazaoSocial = dataReader.GetString(dataReader.GetOrdinal("razaoSocial_cli"));
                    ped.Clie.Cnpj = dataReader.GetString(dataReader.GetOrdinal("cnpj_cli"));

                    ped.CodPedido = dataReader.GetInt32(dataReader.GetOrdinal("codpedido"));
                    ped.Data = dataReader.GetDateTime(dataReader.GetOrdinal("data"));
                    ped.Valor = dataReader.GetDecimal(dataReader.GetOrdinal("valor"));
                    ped.Situacao = dataReader.GetString(dataReader.GetOrdinal("situacao"));


                    ped.Repre.CodRepre = dataReader.GetInt32(dataReader.GetOrdinal("codRepre"));
                    ped.Repre.RazaoSocial = dataReader.GetString(dataReader.GetOrdinal("razaoSocial_rep"));
                    ped.Repre.Cnpj = dataReader.GetString(dataReader.GetOrdinal("cnpj_rep"));
                   
                    
                    retorno.Add(ped);

                }

                return retorno;

            }
            catch (Exception e)
            {


                throw e;
            }


            finally
            {

                Conexao2.obterConexao2().desconectar(con);

            }


        }


        public List<Pedido> listarPedido_Geral()
        {


            List<Pedido> retorno = new List<Pedido>();

        

            try
            {
                // string select = "select p.codpedido , p.data, p.valor, c.codCli, r.codRepre, p.situacao from pedido as p inner join cliente as c on p.codCli=c.codCli inner join Representada as r on p.codRepre=r.codRepre";

                string select = " SELECT Cliente.codCli, Cliente.razaoSocial as razaoSocial_cli, Cliente.cnpj as cnpj_cli, ";
                select += " Pedido.codPedido, Pedido.data, Pedido.valor, Pedido.situacao, ";
                select += " Representada.codRepre, Representada.razaoSocial AS razaoSocial_rep, Representada.cnpj AS cnpj_rep ";
                select += " FROM  Cliente INNER JOIN ";
                select += " Pedido ON Cliente.codCli = Pedido.codCli INNER JOIN";
                select += " Representada ON Pedido.codRepre = Representada.codRepre";
              
                SqlCommand sql = new SqlCommand(select, con);

                SqlDataReader dataReader = sql.ExecuteReader();

                while (dataReader.Read())
                {

                    Pedido ped = new Pedido();
                    ped.Clie.CodCli = dataReader.GetInt32(dataReader.GetOrdinal("codCli"));
                    ped.Clie.RazaoSocial = dataReader.GetString(dataReader.GetOrdinal("razaoSocial_cli"));
                    ped.Clie.Cnpj = dataReader.GetString(dataReader.GetOrdinal("cnpj_cli"));

                    ped.CodPedido = dataReader.GetInt32(dataReader.GetOrdinal("codpedido"));
                    ped.Data = dataReader.GetDateTime(dataReader.GetOrdinal("data"));
                    ped.Valor = dataReader.GetDecimal(dataReader.GetOrdinal("valor"));
                    ped.Situacao = dataReader.GetString(dataReader.GetOrdinal("situacao"));


                    ped.Repre.CodRepre = dataReader.GetInt32(dataReader.GetOrdinal("codRepre"));
                    ped.Repre.RazaoSocial = dataReader.GetString(dataReader.GetOrdinal("razaoSocial_rep"));
                    ped.Repre.Cnpj = dataReader.GetString(dataReader.GetOrdinal("cnpj_rep"));


                    retorno.Add(ped);

                }

                return retorno;

            }
            catch (Exception e)
            {


                throw e;
            }


            finally
            {

                Conexao2.obterConexao2().desconectar(con);

            }


        }



        public void alterar_ped(Pedido ped) {

            try
            {
                SqlCommand sql = new SqlCommand("update pedido set situacao='Vendido' where (codpedido=@codpedido)", con);
                sql.Parameters.AddWithValue("@codPedido", ped.CodPedido);
                sql.ExecuteNonQuery();

            }
            catch (Exception e)
            {

                throw e;
            }

            finally {

                Conexao2.obterConexao2().desconectar(con);
            
            
            }
        
        
        
        }


    }
}
